package com.ruoyi.training.mapper;

import java.util.List;
import com.ruoyi.training.domain.PracticeClass;
import com.ruoyi.training.dto.ClassStudentDto;
import com.ruoyi.training.vo.StudentTrainingQueryVo;
import org.apache.ibatis.annotations.Param;

/**
 * 实践预约班级中间Mapper接口
 * 
 * @author WorrilessGo
 * @date 2025-10-14
 */
public interface PracticeClassMapper 
{
    /**
     * 查询实践预约班级中间
     * 
     * @param practiceClassId 实践预约班级中间主键
     * @return 实践预约班级中间
     */
    public PracticeClass selectPracticeClassByPracticeClassId(String practiceClassId);

    /**
     * 查询实践预约班级中间列表
     * 
     * @param practiceClass 实践预约班级中间
     * @return 实践预约班级中间集合
     */
    public List<PracticeClass> selectPracticeClassList(PracticeClass practiceClass);

    /**
     * 新增实践预约班级中间
     * 
     * @param practiceClass 实践预约班级中间
     * @return 结果
     */
    public int insertPracticeClass(PracticeClass practiceClass);

    /**
     * 修改实践预约班级中间
     * 
     * @param practiceClass 实践预约班级中间
     * @return 结果
     */
    public int updatePracticeClass(PracticeClass practiceClass);

    /**
     * 删除实践预约班级中间
     * 
     * @param practiceClassId 实践预约班级中间主键
     * @return 结果
     */
    public int deletePracticeClassByPracticeClassId(String practiceClassId);

    /**
     * 批量删除实践预约班级中间
     * 
     * @param practiceClassIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePracticeClassByPracticeClassIds(String[] practiceClassIds);

    // 联表查询符合条件的所有数据，添加预约时，查询当前实践分配班级中的学员，lqx
    public List<ClassStudentDto> selectAllByCondition(@Param("query") StudentTrainingQueryVo queryVo);

    /**
     * 通过实践预约表id删除对应内容
     * */
    public void deletePracticeClassByPracticeAppointmentId(String practiceAppointmentId);

    /**
     * 通过实践预约ids删除对应的内容
     * */
    public int deletePracticeClassByPracticeAppointmentIds(String[] practiceAppointmentIds);

    //根据班级ID查询所有有效的实践预约
    public List<PracticeClass> selectByClassId(@Param("classId") String classId);
}
